package com.lengyu.vxminiprogram.security.exception;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.ToString;

@Getter
@AllArgsConstructor
@ToString
public enum ErrorEnum {
    SUCCESS(0,"成功"),
    ERROR(-1,"服务器内部错误"),
    //-1xx 服务器错误
    BAD_SQL_GRAMMAR_ERROR(-101,"sql语法错误"),
    OBJ_RETURN_NULL(-105,"数据库返回值为空"),
    ADD_ERROR(-102,"servlet请求异常"), //-2xx 参数校验
    UPLOAD_ERROR(-103,"文件上传错误"),
    EXPORT_DATA_ERROR(104,"数据导出失败"),
    REDIS_SERVER_ERROR(111,"redis服务器异常"),
    //-2xx 参数校验
    BORROW_AMOUNT_NULL_ERROR(-201,"借款额度不能为空"),
    MOBILE_NULL_ERROR(-202,"手机号码不能为空"),
    MOBILE_ERROR(-203,"手机号码不正确"),
    PASSWORD_NULL_ERROR(204,"密码不能为空"),
    CODE_NULL_ERROR(205,"验证码不能为空"),
    CODE_ERROR(206,"验证码错误"),
    MESSAGE_NULL_ERROR(-212,"用户信息不能为空"),
    URL_FROMAT_ERROR(-213,"链接地址格式错误"),
    MOBILE_EXIST_ERROR(207,"手机号已被注册"),
    BANKNO_EXIST_ERROR(-604,"银行卡已绑定"),
    LOGIN_MOBILE_ERROR(208,"用户不存在"),
    LOGIN_PASSWORD_ERROR(209,"密码错误"),
    LOGIN_LOKED_ERROR(210,"用户被锁定"),
    LOGIN_AUTH_ERROR(-211,"未登录"),
    USER_ISLOCK(-212,"用户冻结"),
    BORROWINFO_NO(-213,"用户借款信息不存在"),


    USER_BIND_IDCARD_EXIST_ERROR(-301,"身份证号码已绑定"),

    USER_NO_BIND_ERROR(302,"用户未绑定"),

    USER_NO_AMOUNT_ERROR(303,"用户信息未审核"),

    USER_AMOUNT_LESS_ERROR(304,"您的借款额度不足"),

    LEND_INVEST_ERROR(305,"当前状态无法投标"),
    LEND_NOTFULL_ERROR(308,"标的金额未满,无法放标"),

    LEND_FULL_SCALE_ERROR(306,"已满标，无法投标"),


    NOT_SUFFICIENT_FUNDS_ERROR(307,"余额不足,请充值"),

    PAY_UNIFIEDORDER_ERROR(401,"统一下单错误"),

    ALIYUN_SMS_LIMIT_CONTROL_ERROR(-502,"短信发送过于频繁"),//业务限流

    ALIYUN_SMS_ERROR(-503,"短信发送失败"),//其他失败

    WEIXIN_CALLBACK_PARAM_ERROR(-601,"回调参数不正确"),

    WEIXIN_FETCH_ACCESSTOKEN_ERROR(-602,"获取access_token失败"),

    WEIXIN_FETCH_USERINFO_ERROR(-603,"获取用户信息失败"),
    LEND_MORE_SCALE_ERROR(-604, "投资金额超标");
    private Integer code;
    private String message;
    public static ErrorEnum getErrEnum(Integer code){
        ErrorEnum[] values = values();
        for (int i = 0; i < values.length; i++) {
            if (values[i].getCode() == code) {
                return values[i];
            }
        }
        return null;
    }

    public static ErrorEnum getEnumByCode(String messageCode) {
        ErrorEnum[] values = values();
        for (int i = 0; i < values.length; i++) {
            if (values[i].getMessage().equals(messageCode)) {
                return values[i];
            }
        }
        return null;
    }
}
